#include "head.h"
bool my_ls(sendMsg msg, client_status *user, int net_fd){
    printf("进入ls的服务端\n");
    recvMsg ret_msg;
    bzero(&ret_msg,sizeof(ret_msg));
    char full_path[1024]={0};
    strcpy(full_path,msg.msg);
    printf("ls用来查找的路径:%s\n",full_path);


    //sql是一个指向 MySQL 连接的指针。
    //result 是一个指向查询结果集的指针。
    //row 是一个表示单行查询结果的数组
    //user->sql=getsql();
    MYSQL_RES *result;
    MYSQL_ROW row;
    char id[255]={0};
    char query[1000];
    
    snprintf(query,sizeof(query),"SELECT path,id FROM files where file_type=1 and uid='%s'",user->user_id);
    //查询出所有目录的所在路径
    mysql_query(user->sql,query);
    //获取查询结果集
    result = mysql_store_result(user->sql);
    char ret[2048]={0};
    bool flag=false;
    while ((row = mysql_fetch_row(result))) {
        printf("row:%s\n",row[0]);
        if(strcmp(row[0],full_path)==0){
            flag=true;
            strcpy( id,row[1]);
            printf("path_id:%s\n",id);
            break;//只要知道路径存在就可以了
                  //只要有一条路径重复,就说明这条路径存在
        }
    }

    int i_id=atoi(id);
    printf("%d\n",i_id);

    mysql_free_result(result);

    MYSQL_RES *result1;

    if(!flag){
        //路径不存在
        strcpy(ret_msg.statu,"error");
    }else{
        //路径存在
        //查询出所有路径
        char sentence[1024];
        sprintf(sentence,"SELECT file_name FROM files where pre_dir=%d and uid='%s'",i_id,user->user_id);
        printf("%s\n",sentence);
        if (mysql_query(user->sql, sentence)) {
            fprintf(stderr, "SELECT error: %s\n", mysql_error(user->sql));
            return false;
        }

        result1 = mysql_store_result(user->sql);
        if (result1 == NULL) {
            fprintf(stderr, "mysql_store_result error: %s\n", mysql_error(user->sql));
            return false;
        }

        while ((row = mysql_fetch_row(result1))) {
            strcat(ret,row[0]);
            strcat(ret,"   ");
            printf("%s\n",row[0]);
        }
        strcpy(ret_msg.msg,ret);
        mysql_free_result(result1);
    }
    printf("ls的结果:%s\n",ret);


    send(net_fd,&ret_msg,sizeof(msg),MSG_NOSIGNAL);

    return true;

}
